home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / bin / make-memtest86+-boot-floppy < prev    next >
Text File  |  2008-09-11  |  2KB  |  101 lines

  1. #!/bin/sh
  2. #
  3. # Script for making a memtest86 boot floppy using GRUB as bootloader
  4. #
  5.  
  6. # (c) 2003 Peter Loje Hansen <pl@2m.dk>
  7. #  - original version
  8. # (c) 2004 Yann Dirson <dirson@debian.org>
  9. #  - added parameters
  10. #  - ability to work on a floppy image instead of a real floppy
  11. #  - adapted patches from Martin Koeppe <martin@koeppe-net.de>, to use
  12. #    mtools and install full grub
  13.  
  14. # TODO:
  15. # - add a flag to generate a default boot entry for (hd0)
  16.  
  17. set -e
  18.  
  19. MEMTEST=/boot/memtest86+.bin
  20. FLOPPYIMAGE=/dev/fd0
  21.  
  22. error()
  23. {
  24.     echo >&2 "$0: $*"
  25.     exit 1
  26. }
  27.  
  28. needsarg()
  29. {
  30.     [ $1 -ge 2 ] || error "syntax error"
  31. }
  32.  
  33. [ -d /usr/lib/grub ] || error "Can't find /usr/lib/grub - did you install a recent grub package (0.95+cvs20040624 or later) ?"
  34. [ -x /usr/bin/mformat ] || error "Can't find mformat - did you install the mtools package ?"
  35.  
  36. while [ $# -gt 0 ]
  37. do
  38.     case "$1" in
  39.     --help) echo "$0 [--memtest $MEMTEST] [--floppyimage $FLOPPYIMAGE]"; exit 0 ;;
  40.     --memtest) needsarg $#; MEMTEST="$2"; shift ;;
  41.     --floppyimage) needsarg $#; FLOPPYIMAGE="$2"; shift ;;
  42.     *) error "syntax error" ;;
  43.     esac
  44.     shift
  45. done
  46.  
  47. MOUNTPOINT=$(mktemp -d)
  48.  
  49. if [ -b "$FLOPPYIMAGE" ]
  50. then
  51.     FINALDEV="$FLOPPYIMAGE"
  52.     FLOPPYIMAGE="$(mktemp)"
  53. else
  54.     FINALDEV=""
  55. fi
  56.  
  57. echo "* Creating msdos file system"
  58. echo
  59. if [ ! -s "$FLOPPYIMAGE" ]; then
  60.     # unless a non-empty image exists, create a blank one first
  61.     dd bs=1024 count=1440 if=/dev/zero of="$FLOPPYIMAGE"
  62. fi
  63. # FIXME: "-f 1440" should probably be dropped
  64. mformat -i $FLOPPYIMAGE -f 1440 :: 
  65.  
  66. mmd -i $FLOPPYIMAGE ::/boot 
  67. mmd -i $FLOPPYIMAGE ::/boot/grub 
  68.  
  69. echo
  70. echo "* Installing GRUB files"
  71. mcopy -v -i "$FLOPPYIMAGE" - ::/boot/grub/menu.lst <<EOF
  72. color green/black light-green/black
  73. default 0
  74. timeout 10
  75. title  memtest
  76. kernel (fd0)/boot/memtest.bin
  77. EOF
  78. mcopy -v -i "$FLOPPYIMAGE" /usr/lib/grub/i386-pc/* ::/boot/grub 
  79.  
  80. echo
  81. echo "* Installing $MEMTEST"
  82. mcopy -v -i "$FLOPPYIMAGE" "$MEMTEST" ::/boot/memtest.bin 
  83.  
  84. echo
  85. echo -n "* Installing GRUB"
  86. /usr/sbin/grub --batch --device-map=/dev/null <<EOF
  87. device (fd0) $FLOPPYIMAGE
  88. root (fd0)
  89. setup (fd0)
  90. quit
  91. EOF
  92.  
  93. if [ -n "$FINALDEV" ]; then
  94.     echo
  95.     echo "Insert a writable floppy for $FINALDEV and press enter"
  96.     read FOO
  97.  
  98.     dd bs=1024 if="$FLOPPYIMAGE" of="$FINALDEV"
  99.     rm "$FLOPPYIMAGE"
  100. fi
  101.